#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>
#import "AddressAnnotation.h"

/**
 * A PinNoteViewerDelegate is a protocol for a delegate that
 * handles the events from a pin note viewer.
 *
 * @author      James Lin
 * @version     1.3.7
 * @since       1.3.0
 */
@protocol PinNoteViewerDelegate

/**
 * Get the navigation controller on which to push the pin note viewer.
 *
 * @return  the navigation controller on which to push the pin note viewer
 */
- (UINavigationController*)getNavController;

/**
 * Handle a request to save a given pin note.
 *
 * @param pinNote  the pin note to save
 */
- (void)requestSavePinNote:(AddressAnnotation*)pinNote;

/**
 * Handle a request to relocate a given pin note.
 *
 * @param pinNote  the pin note to relocate
 */
- (void)requestRelocatePinNote:(AddressAnnotation*)pinNote;

/**
 * Delete the given persistent pin note.
 *
 * @param pinNote  the pin note to delete
 */
- (void)requestDeletePinNote:(AddressAnnotation*)pinNote;

/**
 * Handle notification for completion of entering details 
 * for a new pin note.
 *
 * @param title  title of the new pin note
 * @param notes  notes for the new pin note
 */
- (void)handleNewPinNoteWithTitle:(NSString*)title 
							notes:(NSString*)notes;

/**
 * Handle notification for completion of editing details 
 * for a newly added pin note.
 *
 * @param title  title of the new pin note
 * @param notes  notes for the new pin note
 */
- (void)handleEditedPinNoteWithTitle:(NSString*)title 
							   notes:(NSString*)notes;

@end
